// pages/my/my.js
const request = require("../../utils/request.js");

Page({
  /**
   * 页面的初始数据
   */
  data: {
    isLoggedIn: false, // 登录状态
    userInfo: null, // 用户信息
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {},

  /**
   * 加载用户信息
   */
  getuserId() {
    const userid = wx.getStorageSync("userid");
    return userid;
  },
  /**
   * 加载用户信息
   */
  loadUserInfo(userid) {
    const token = wx.getStorageSync('token');
    
    if (!token) {
      console.error('没有找到token，无法获取用户信息');
      return;
    }
    
    // 使用统一的request工具，自动处理token认证
    request.get('/user/info', { userid: userid })
      .then((res) => {
        console.log('用户信息获取成功:', res);
        if (res.data && Array.isArray(res.data) && res.data.length > 0) {
          // 服务器返回的是数组，取第一个元素
          const userInfo = res.data[0];
          console.log('准备更新用户信息:', userInfo);
          console.log('用户名:', userInfo.username);
          console.log('用户ID:', userInfo.userid);
          console.log('昵称:', userInfo.nickname);
          
          // 更新页面数据
          this.setData({
            userInfo: userInfo,
          }, () => {
            console.log('setData完成，当前页面数据:', this.data.userInfo);
          });
        } else if (res.data && !Array.isArray(res.data)) {
          // 如果返回的不是数组，直接使用
          const userInfo = res.data;
          console.log('准备更新用户信息(非数组):', userInfo);
          this.setData({
            userInfo: userInfo,
          }, () => {
            console.log('setData完成，当前页面数据:', this.data.userInfo);
          });
        } else {
          console.error('用户信息数据格式异常:', res.data);
        }
      })
      .catch((err) => {
        console.error('加载用户信息失败:', err);
        
        // 如果是token无效错误，清除登录状态
        if (err.statusCode === 401 || err.code === 10019) {
          console.log('token已过期，清除登录状态');
          this.logout();
        } else {
          wx.showToast({
            title: "加载用户信息失败",
            icon: "none",
          });
        }
      })
      .finally(() => {
        this.setData({
          loading: false,
        });
      });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    // 页面初次渲染完成时检查登录状态
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const userid = wx.getStorageSync('userid');
    
    console.log('检查登录状态 - token:', token, 'userid:', userid);
    
    if (token && userid) {
      // 已登录，设置登录状态并从服务器获取最新用户信息
      this.setData({
        isLoggedIn: true
      });
      // 始终从服务器获取最新的用户信息
      this.loadUserInfo(userid);
    } else {
      // 未登录，清除状态
      this.setData({
        isLoggedIn: false,
        userInfo: null
      });
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次页面显示时检查登录状态
    this.checkLoginStatus();
  },

  /**
   * 跳转到登录页面
   */
  goToLogin() {
    wx.navigateTo({
      url: "/pages/login/login?mode=login",
    });
  },

  /**
   * 跳转到注册页面
   */
  goToRegister() {
    wx.navigateTo({
      url: "/pages/login/login?mode=register",
    });
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: "确认退出",
      content: "确定要退出登录吗？",
      success: (res) => {
        if (res.confirm) {
          // 清除登录状态
          wx.removeStorageSync("token");
          wx.removeStorageSync("refreshToken");
          wx.removeStorageSync("userid");

          // 更新页面状态
          this.setData({
            isLoggedIn: false,
            userInfo: null,
          });

          wx.showToast({
            title: "已退出登录",
            icon: "success",
          });
        }
      },
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
